package org.mkdir.web.controller.felhasznalo;

import java.io.IOException;
import java.io.Serializable;
import java.util.logging.Logger;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import org.mkdir.ejb.FelhasznaloService;
import org.mkdir.ejb.RendszerBeallitasokService;
import org.mkdir.model.Felhasznalo;
import org.mkdir.model.Szerepkor;
import org.mkdir.util.StringUtil;

/**
 *
 * @author Alex Paréj
 */
@Named
@SessionScoped
public class FelhasznaloSessionController implements Serializable {

    @Inject
    private FelhasznaloService felhasznaloService;
    @Inject
    private RendszerBeallitasokService rendszerBeallitasokService;
    public static final Logger logger = Logger.getLogger(FelhasznaloSessionController.class.getName());
    private Felhasznalo felhasznalo;

    public Felhasznalo getFelhasznalo() {
        if (felhasznalo == null) {
            felhasznalo = felhasznaloService.getBejelentkezettFelhasznalo();
        }
        return felhasznalo;
    }

    public void invalidateFelhasznalo() {
        felhasznalo = null;
    }

    public boolean isAdmin() {
        Felhasznalo bejelentkezettFelhasznalo = felhasznaloService.getBejelentkezettFelhasznalo();
        return bejelentkezettFelhasznalo != null ? felhasznaloService.isSzerepkorben(bejelentkezettFelhasznalo, Szerepkor.ADMIN) : null;
    }

    public void kijelentkezesListener() {
        kijelentkezik();
    }

    public String getFelhasznaloStilus() {
        if (getFelhasznalo() == null) {
            return rendszerBeallitasokService.getAlepertelmezettTema().getErtek();
        }
        return getFelhasznalo().getStilus();
    }

    public void lejartIdokorlatListener() {
        ExternalContext ctx = FacesContext.getCurrentInstance().getExternalContext();
        ctx.invalidateSession();
        try {
            ctx.redirect(ctx.getRequestContextPath() + "/inaktiv.jsf");
        } catch (IOException ex) {
        }
    }

    private void kijelentkezik() {
        ExternalContext ctx = FacesContext.getCurrentInstance().getExternalContext();
        ctx.invalidateSession();
        try {
            ctx.redirect(ctx.getRequestContextPath() + "/login.jsf");
        } catch (IOException ex) {
        }
    }
}
